using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;

namespace Medianamik.Client.MVP.Model.DataAccess
{
    public interface ICollectionWithChildren<TConcreteType, TInterface> : IEnumerable<TInterface>
    {
        TConcreteType LoadChildNodes(Guid pNodeId, bool pInclusive, int pMaxDepth, ContentState contentState);
        TConcreteType LoadParentNodes(Guid pNodeId, bool pInclusive, int pMaxDepth, ContentState contentState);
        TConcreteType Load(ContentState contentState);
        TConcreteType LoadChildNodes(Guid pNodeId, bool pInclusive, int pMaxDepth);
        TConcreteType LoadParentNodes(Guid pNodeId, bool pInclusive, int pMaxDepth);
        TConcreteType Load();
        void LoadAndCloseReader(IDataReader reder);
    }
}